// 'use strict'

// // 复习内容：
// // 1.数组

// //1.题目描述 找出元素 item 在给定数组 arr 中的位置 输出描述: 如果数组中存在 item，则返回元素在数组中的位置，否则返回 -1
// var arr = [1,2,3,4];
// var item = arr.indexOf(2);
// console.log(item);

// //2. 题目描述 计算给定数组 arr 中所有元素的总和 输入描述: 数组中的元素均为 Number 类型
// var sum = 0 ;
// for(var i = 0 ;i <= arr.length;i++){
//     sum = sum+i;
// }
// console.log(sum);

// //3. 题目描述 移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr，结果返回新的数组

// var arr1 = [1,2,3,4,2];
// var item = 2;

// function items(arr1,item){
//     var ar =[];
//    arr1.forEach(function(arrItem) { //forEach(): 没有返回值，本质上等同于 for 循环，对每一项执行 function 函数
//        if(arrItem != item){
//            ar.push(arrItem);
//        }
//    })
//    return ar;
// }
//     console.log(items(arr1,item));

// //4. 题目描述 移除数组 arr 中的所有值与 item 相等的元素，直接在给定的 arr 数组上进行操作，并将结果返回
// var arr = [1,2,3,4,2,2]
// function deletes(arr,item) {
//     while(arr.indexOf(item) != -1){
//         arr.splice(arr.indexOf(item),1);
//     }
//     return arr;
// }
// console.log(deletes(arr,2));

// //5.题目描述 在数组 arr 末尾添加元素 item。不要直接修改数组 arr，结果返回新的数组
// var arr = [1,2,3];
// var item = 10;
// function addArr(arr,item) {
//     var arr2 = [];
//     arr.forEach(function(arr) {
//         console.log(arr);
//         arr2.push(arr);
//     })
//     arr2.push(item);

//     return arr2;
// }
// console.log(addArr(arr,item));

// //6. 题目描述 删除数组 arr 最后一个元素。不要直接修改数组 arr，结果返回新的数组
// var arr = [1,2,3,4];
// function arrdelete(arr) {
//     var newArr = [];

//         for(var i = 0;i < arr.length -1;i++ ){
//             newArr.push(arr[i]);
//         }

//     return newArr;
// }
// console.log(arrdelete(arr));


// // 7. 题目描述 在数组 arr 开头添加元素 item。不要直接修改数组 arr，结果返回新的数组
// var arr = [1,2,3,4];
// var item = 30;
// function addArr(arr,item) {
//     var newArr = [];
//     arr.forEach(function (arr) {
//         newArr.push(arr);
//     })
//     newArr.unshift(item);
//     return newArr;
// }
// console.log(addArr(arr,item));

// //8. 题目描述 删除数组 arr 第一个元素。不要直接修改数组 arr，结果返回新的数组
// var arr = [1,2,3,4,5];
// function deleteArr(arr) {
//     var arr1 = arr.splice(0);
//     arr1.shift();
//     return arr1;
// }
// console.log(deleteArr(arr));

// // 9.题目描述 合并数组 arr1 和数组 arr2。不要直接修改数组 arr，结果返回新的数组
// var arr1 = [1,2,3,4,5];
// var arr2 = ['a','b','c','d','e'];
// function joinArr(arr1,arr2) {
//     var newArr = arr1.concat(arr2);
//     return newArr;
// }   
// console.log(joinArr(arr1,arr2));

// // 10. 题目描述 在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr，结果返回新的数组
// var arr = [1,2,3,4,5];
// var item = 'a';
// var index = 2;
// function addArr(arr,item,index) {
//     var newArr = arr.splice(0);
//     newArr.splice(index,1,item);
//     return newArr;
// }
// console.log(addArr(arr,item,index));

// // 11. 题目描述 统计数组 arr 中值等于 item 的元素出现的次数
// var arr = [1,2,2,3,2,4,2,4];
// var item = 2;
// function sumArr(arr,item) {
//     var sum = 0;
//     arr.forEach(function (arr) {
//         if(arr === item){
//             sum++;
//         }
//     })
//     return sum;
// }
// console.log(sumArr(arr,item));

// // 12. 题目描述 找出数组 arr 中重复出现过的元素
// var arr = [1,2,3,3,4,2,5,1];
// function againArr(arr){
//     var newArr = [];
//     arr.forEach(function (item) {
//         if((arr.indexOf(item) != -1) && (arr.indexOf(item)!=arr.lastIndexOf(item))){
//             if(newArr.indexOf(item) === -1){
//                 newArr.push(item)
//             }
//         }
//     })
//     return newArr;
// }
// console.log(againArr(arr));


// //13. 题目描述 为数组 arr 中的每个元素求二次方。不要直接修改数组 arr，结果返回新的数组
// var arr = [1,2,3];
// function arrPF(arr) {
//     var newArr = [];
//     for(var i = 0; i<arr.length;i++){
//         var PF = arr[i]*arr[i];
//         newArr.push(PF);
//     }
//     return newArr;
// }
// console.log(arrPF(arr));

// //14. 题目描述 在数组 arr 中，查找值与 item 相等的元素出现的所有位置
// var arr = [1,2,3,3,4,5,6,3];
// var target = 3;

// function cfArr(arr, target) {
//     var result = [];
//     arr.forEach(function (item,index) {
//         if (item===target) {
//             result.push(index);
//         }
//     });
//     return result;
// }    
// console.log(cfArr(arr,target));

// // 2.高阶函数
// // 练习：利用reduce()求积：
// var arr = [1, 3, 5, 7, 9];
// function product(arr) {
 
//     return arr.reduce(function (x,y) {
//         return x * y;
//     });
// }

// // 测试:
// if (product([1, 2, 3, 4]) === 24 && product([0, 1, 2]) === 0 && product([99, 88, 77, 66]) === 44274384) {
//     console.log('测试通过!');
// }
// else {
//     console.log('测试失败!');
// }


// //练习：不要使用JavaScript内置的parseInt()函数，利用map和reduce操作实现一个string2int()函数：
// function string2int(s) {
//      var arr = s.split('');
//      var newArr =arr.map((x)=>{
//          return x*1;
//      })
//      var res =newArr.reduce((x,y)=>{
//          return x*10+y;
//      })
//     return res;
//     }



// // 测试:
// if (string2int('0') === 0 && string2int('12345') === 12345 && string2int('12300') === 12300) {
//     if (string2int.toString().indexOf('parseInt') !== -1) {
//         console.log('请勿使用parseInt()!');
//     } else if (string2int.toString().indexOf('Number') !== -1) {
//         console.log('请勿使用Number()!');
//     } else {
//         console.log('测试通过!');
//     }
// }
// else {
//     console.log('测试失败!');
// }

// // 操作表单
// // Qjuery添加删除修改操作
// // 事件练习(必考)



